iT邦幫忙

2024 iThome 鐵人賽

DAY 29
1
Python

30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手系列 第 29

Python 如何自動化處理 Excel?解決工廠訂單管理挑戰的實際案例【Python 處理 Excel #29】

  • 分享至 

  • xImage
  •  

本篇文章同步發布於 Python 如何自動化處理 Excel?解決工廠訂單管理挑戰的實際案例【Python 處理 Excel #29】

前言

這篇文章分享如何運用 Python 的 pandas 和 openpyxl 套件,解決工廠資材部門在 ERP 系統轉換後面臨的 Excel 報表更新挑戰。文章將詳細敘述如何通過程式化方案,將原本需要 6 小時的人工作業縮短至 5 分鐘,同時提供更全面的訂單狀態追蹤。這不僅大幅提升工作效率,更為管理決策提供可靠的數據支持,使部門能夠更有效地掌握和分析訂單達交情況。


1. 情境描述:工廠資材部門的挑戰

我在工廠的資材部門工作,這個部門主要負責安排工廠的生產計畫以及管控工廠庫存,每周我的部門都會向總公司的業務管理部門更新工廠這個月承諾可以出貨多少訂單數量和金額,我們稱之達交數量和達交金額。

畢竟要出貨公司才能賺錢,老闆們總是會優先關心這個月的達交金額是多少?其次是不能達交的金額遇到了什麼問題?為什麼不能達交?由於不能達交的原因很常是因為訂單的原物料狀況 (以下簡稱料況) 有問題,所以通常我們會連帶更新不能達交的訂單料況。

ERP 系統轉換帶來的困擾

資材提供的報表數據會直接影響公司的營收決策。然而隨著公司將 ERP 系統從舊的自製系統轉換為商用套裝 ERP 系統,新系統內的資訊雖然齊全,但彼此之間的連結性尚弱,造成查詢資料與更新報表的工作十分繁瑣。

Excel 報表的局限性

聽說在舊 ERP 系統無論是達交金額或料況都已請經 MIS 寫好報表程式,以使用者覺得清楚的方式呈現,可是在新 ERP 系統因為還沒有建立類似的整合性報表,同事們不得不將分散的資料下載到 Excel 中,使用大量使用 VLOOKUP、SUMIF 等函數整理資料,這種方法不僅耗時,而且難以提供完整的訂單清單和詳細的料況。


2. 任務:優化更新報表流程與提高準確性

入職三個月後,更新達交金額和料況的任務交由我負責,同時需要解決以下 2 個問題:

  1. 達交金額差異:業務管理部門計算出的訂單金額與資材部門提供的金額總是對不上,這讓業務管理部門的主管相當困惑,我需要找出兩個部門計算結果不一致的原因,並建立一個可靠的計算方法。
  2. 系統化資料更新:能否幫助公司設計出一個更系統化的方式更新訂單達交金額與料況,並提供一份可以追蹤所有訂單狀態的報表資料。

3. 行動方案:以 Python 設計解決方案

整合前輩經驗與系統資料

為了解決這些問題,我選擇用 Python 作為工具,一邊深入研究公司 ERP 系統上的資料結構,一邊四處問部門的前輩們他們做事的方式是什麼。前輩們不會寫程式,但是了解他們的人工判斷細節對於我設計自動化流程至關重要,我可以將這些人為流程轉化為可以程式化的邏輯。

反覆試驗與優化程式

過程中我使用 Python 的 pandas 套件處理大量數據,並運用 openpyxl 套件美化 Excel 報表。由於這是我第一次將 Python 運用到這麼大規模的資料處理中,所以不斷透過試錯法 (trial and error) 改良程式碼。

不懂的 Python 語法就上網查或求助生成式 AI,一開始學 pandas 套件和 openpyxl 套件沒有明確的讀取檔案、處理資料、格式化、輸出檔案等步驟可以依循,什麼都不會的情況下,當然是當下需要什麼功能就去查那個功能怎麼實作。

生成式 AI 不一定好用,因為問題比較複雜時,如果沒有辦法清楚定義問題與希望 AI 幫忙完成的事情,基本上 AI 產出的答案沒有辦法套用在日漸複雜的程式邏輯中,所以我也練習把大問題切割成小問題。

一次又一次的嘗試,也仰賴主管和同事們的回饋,才慢慢地設計出運行結果符合大家認知的達交金額與料況更新程式。


4. 結果:提高報表的更新效率與準確度

最早計算達交金額和整理料況的程式是兩個不同的程式,現在已經將這兩份程式合併在一起變成一個完整的程式專案。這個專案經驗幫助我達到 2 個效果:

  1. 提高報表更新效率:原本每一次人工更新達交金額至少需要 6 小時,而程式化後只需 5 分鐘 (效率提升 98%)。料況更新的速度更是驚人,人工查詢並整理一張訂單的料況需要 4 分鐘,現在可以在 4 分鐘內處理所有訂單的料況。節省的時間讓我能專注於價值更高的工作上。
  2. 提高資料完整性與可靠性:程式不僅自動化計算達交金額,還能產生包含完整訂單明細的報表。這份報表讓我的主管與同事更即時掌握整體訂單狀況,以及哪些訂單需要特別關注。

為部門決策提供有力支持

以前因為缺少統整類型的數據,所以物料來不及進料時,見一個追一個,現在藉由程式產出的 Excel 報表資料,就能找出什麼物料對業績的影響最大、影響金額多少、總共欠缺多少數量等等,甚至能進一步以客戶/產品類別的角度分析整體接單和達交狀態。


5. 反思:個人成長與技能提升

我不止在這個專案中提升程式設計能力,還學會如何將複雜的業務邏輯轉換為可重複執行的程式碼。另外看著其他人將報表資料發揚光大,拿去做更多影響管理決策的應用,我自己也學到如何從數據的角度處理與追蹤異常。

本篇文章同步發布於 Python 如何自動化處理 Excel?解決工廠訂單管理挑戰的實際案例【Python 處理 Excel #29】


上一篇
如何使用 PyInstaller 將 Python 專案打包成 exe 執行檔?【Python 處理 Excel #28】
下一篇
《30 天學會用 Python pandas 和 openpyxl 處理 Excel》系列文回顧與總結【Python 處理 Excel #30】
系列文
30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言